
#if !defined(__APP_DEVICE_H)
#define __APP_DEVICE_H
#include "app_buffer.h"
#include "app_pool.h"
#include <sys/time.h>
// 设备结构体

typedef struct
{
    char *flie_name; // 文件名  接收到的下游设备数据/要发送给下游设备的数据
    int fd;
    Buffer *up_buffer;
    Buffer *down_buffer;
    pthread_t read_thread;      // 读线程的标识
    int is_read_thread_running; // 读线程是否在运行的标识
    long last_write_time;       // 最后一次写入的时间
    //  读后处理 对读取到的数据进行处理的函数 如：将蓝牙数据转换成字符数组消息
    int (*post_read)(char *data, int len);
    // 写前处理 ：对要写入到设备的数据进行处理的函数 如：将字符数组消息转换成蓝牙数据
    int (*pre_write)(char *data, int len);
} Device;

/// @brief 初始化
/// @param file_name
/// @return 设备结构体指针
Device *app_device_init(char *file_name);

/// @brief 启动设备
/// @param device
/// @return 0 成功 -1 失败
int app_device_start();

/// @brief 释放设备
/// @param device
void app_device_free();

#endif // __APP_DEVICE_H




